<?php

/**
 * Контролер квартир
 * 
 * @author Kosty Ryabichenko <k.ryabichenko@gmail.com>
 * @version 1.0
 */
class FlatController extends FBController {

    /**
     * @return array action filters
     */
    public function filters() {
        return CMap::mergeArray(parent::filters(), array(
                    'accessControl', // perform access control for CRUD operations
        ));
    }

    /**
     * Specifies the access control rules.
     * This method is used by the 'accessControl' filter.
     * @return array access control rules
     */
    public function accessRules() {
        return array(
            array('allow', // allow admin user to perform 'admin' and 'delete' actions
                'actions' => array('index', 'create', 'update', 'view'),
                'users' => array('@'),
            ),
            array('allow', // allow admin user to perform 'admin' and 'delete' actions
                'actions' => array('view'),
                'users' => array('?'),
            ),
            array('deny', // deny all users
                'users' => array('*'),
            ),
        );
    }

    public function actionIndex() {        
        
        $criteria = new CDbCriteria();
        $criteria->condition = 'user_id = :userId';
        $criteria->params = array(':userId' => Yii::app()->user->id);

        $flats = Flat::model()->findAll($criteria);

        $this->render('index', array('flats' => $flats));
    }
    
    public function actionView($id){
        $model = $this->loadModel($id);
        
        $privateMessage = new PrivateMessage();
        
        $data = Yii::app()->request->getParam('PrivateMessage', null);
        if(!empty($data)){
            $privateMessage->attributes = $data;
            $privateMessage->pub_date = time();
            if ($privateMessage->save()) {
                
            }
        }
        
        $this->render('view', array(
            'model' => $model,
            'comfort' => Comfort::getActiveComfort(),
            'privateMessage' => $privateMessage,
        ));
    }

    /**
     * Создание недвижимости
     * @param integer $id
     */
    public function actionCreate() {

        $model = new Flat('create');

        $data = Yii::app()->request->getParam('Flat', null);

        if (!empty($data)) {

            $model->attributes = $data;
            $model->comfort = $data['comfort'];
            $model->user_id = Yii::app()->user->id;
            $model->is_active = 2;

            if ($model->save()) {

                //Сохраняю картинки
                $path = Yii::getPathOfAlias(Yii::app()->params['path_img_flat']) . DIRECTORY_SEPARATOR . $model->id;
                mkdir($path, 0777);
                for ($i = 0; $i < 8; $i++) {
                    $img = CUploadedFile::getInstance($model, 'img' . $i);

                    if (!empty($img)) {
                        $model->{'img' . $i} = $img;
                        $model->{'img' . $i}->saveAs($path . DIRECTORY_SEPARATOR . $img);
                        $model->save();
                    }
                }

                //обновляю комфорты
                Comfort::updateComfortInModel($model);

                //добавляю страницы
                $this->addPages($model);


                $this->redirect(Yii::app()->createUrl('/flat'));
            }
        }

        $this->render('create', array(
            'model' => $model,
            'comfort' => Comfort::getActiveComfort(),
        ));
    }

    /**
     * Апдейт недвижимости
     * @param integer $id
     */
    public function actionUpdate($id) {
        $model = $this->loadModel($id);

        $data = Yii::app()->request->getParam('Flat', null);
        if (!empty($data)) {

            $model->attributes = $data;
            $model->comfort = $data['comfort'];
            $model->is_active = 2;
            
            if ($model->save()) {
                //Сохраняю картинки
                $path = Yii::getPathOfAlias(Yii::app()->params['path_img_flat']) . DIRECTORY_SEPARATOR . $model->id;
                mkdir($path, 0777);
                for ($i = 0; $i < 7; $i++) {
                    $img = CUploadedFile::getInstance($model, 'img' . $i);

                    if (!empty($img)) {
                        $model->{'img' . $i} = $img;
                        $model->{'img' . $i}->saveAs($path . DIRECTORY_SEPARATOR . $img);
                        $model->save();
                    }
                }

                //обновляю комфорты
                Comfort::updateComfortInModel($model);

                $this->redirect(Yii::app()->createUrl('/flat'));
            }
        }

        $this->render('update', array(
            'model' => $model,
            'comfort' => Comfort::getActiveComfort(),
        ));
    }

    /**
     * Загрузить затребованную модель
     * @param integer
     */
    public function loadModel($id) {
        $model = Flat::model()->findByPk((int) $id);
        if (empty($model)) {
            throw new CHttpException(404, 'Запрашиваемая не существует.');
        }
        return $model;
    }

    private function addPages($model) {
        Page::model()->addPage(array(
            'name' => 'Изменить объявления #'.$model->id,
            'title' => 'Изменить объявления #'.$model->id,
            'description' => 'Изменить объявления #'.$model->id,
            'keywords' => 'Изменить объявления #'.$model->id,
            'url' => '/profile/update-flat/' . $model->id,
            'is_active' => '1',
            'status' => Page::getTypePage('flat'),
        ));

        Page::model()->addPage(array(
            'name' => 'Удалить объявления #'.$model->id,
            'title' => 'Удалить объявления #'.$model->id,
            'description' => 'Удалить объявления #'.$model->id,
            'keywords' => 'Удалить объявления #'.$model->id,
            'url' => '/profile/delete-flat/' . $model->id,
            'is_active' => '1',
            'status' => Page::getTypePage('flat'),
        ));
        
        $city = City::model()->findByPk($model->city_id);
        Page::model()->addPage(array(            
            'name' => 'Квартира посуточно - '.$model->street . ' ' . $model->home.', '.$city->name,
            'title' => 'Квартира посуточно - '.$model->street . ' ' . $model->home.', '.$city->name,
            'description' => 'Снять квартиру посуточно в городе '.$city->name.' по адресу '.$model->street . " " . $model->home.' - аренда посуточно с Flatrent.in.ua',
            'keywords' => $model->street . ' ' . $model->home.', '.$city->name,
            'url' => $model->сity->url . "/" . $model->id,
            'is_active' => '1',
            'status' => Page::getTypePage('flat'),
        ));
    }

}